package com.gutou.yeaicodemother.model.enums;

import cn.hutool.core.util.ObjUtil;
import lombok.Getter;

/**
 * 代码生成类型枚举
 * 用于定义不同的代码生成模式
 */
@Getter
public enum CodeGenTypeEnum {

    /**
     * 原生 HTML 模式
     * 生成单一的 HTML 文件
     */
    HTML("原生 HTML 模式","html"),
    /**
     * 原生多文件模式
     * 生成多个文件的项目结构
     */
    MULTI_FILE("原生多文件模式","multi-file"),
    /**
     * Vue 工程模式
     * 生成 Vue 项目的代码结构
     */
    VUE_PROJECT("Vue 工程模式", "vue_project");


    /** 枚举值的文本描述 */
    private final String text;
    /** 枚举值的标识符 */
    private final String value;

    /**
     * 构造函数
     * @param text 枚举值的文本描述
     * @param value 枚举值的标识符
     */
    CodeGenTypeEnum(String text, String value) {
        this.text = text;
        this.value = value;
    }

    /**
     * 根据值获取对应的枚举类型
     * @param value 枚举的值
     * @return 匹配到的枚举类型，如果未匹配到则返回null
     */
    public static CodeGenTypeEnum getEnumByValue(String value){
        // 检查输入值是否为空
        if (ObjUtil.isEmpty(value)){
            return null;
        }
        // 遍历所有枚举值
        for (CodeGenTypeEnum codeGenTypeEnum : CodeGenTypeEnum.values()){
            // 比较当前枚举的值与输入值是否相等
            if (codeGenTypeEnum.getValue().equals(value)){
                return codeGenTypeEnum;
            }
        }
        // 未匹配到任何枚举时返回null
        return null;
    }

}
